D7 a INADDR_ANY

Otázka od: Dalibor Toman

21. 9. 2002 19:31

DD,

pouzivam D5 a narazil jsem pri testovani D7 na tento problem:

kod:
--
VAR
  IP : DWORD;

begin
  if IP = INADDR_NONE then
--

v D7 kompilator tvrdi, ze podminka je vzdycky neplatna. Pri pohledu do ASM
je jasne, ze se provede konverze IP na 64 bitu a pak se vysledek porovnava
s -1 coz je samozrejme vzdy false.
D5 zadnou konverzi neprovadi a podminka chodi jak ma.

D7 (mozna uz D6) zmenilo definici INADDR_ANY (hint nabizi typ : -128..127 -
zdrojaky winsock.pas v Trial verzi nejsou   ) nebo se zmenilo prirazeni
defaultnich typu ciselnym netypovym konstantam podle hodnoty konstanty ??
Podle napovedy (nejsem si jist, zda se mi v D7 nezobrazuje helpfile z D5) by
CONST INADDR_ANY = $FFFFFFFF mel mit za vysledek typ Cardinal (cili DWORD).
Cili asi Winsock.pas z D7 definuje const INADDR_ANY=-1; (coz by melo
padnout na ten shortint) ?

po zmene INVALID_HANDLE_VALUE (aby se to nepletlo tak z -1 na DWORD(-1)) je
to dalsi podobny kotrmelec mezi verzemi Delphi.

D. Toman

Odpovedá: Petr Vones

23. 9. 2002 16:06

From: "Dalibor Toman" <dtoman@fortech.cz>
> D7 (mozna uz D6) zmenilo definici INADDR_ANY (hint nabizi typ : -128..127 -
> zdrojaky winsock.pas v Trial verzi nejsou   ) nebo se zmenilo prirazeni

D6 a D7: INADDR_NONE = -1;

Petr Vones